AWS再入門 Amazon Kinesis編
はじめに
AWSチームのすずきです。
当エントリはDevelopers.IOで弊社AWSチームによる2015年アドベントカレンダー 『AWS サービス別 再入門アドベントカレンダー 2015』の16日目のエントリです。 昨日15日目のエントリは、千葉による『Amazon DynamoDB』でした。
このアドベントカレンダーの企画は、普段AWSサービスについて最新のネタ・深い/細かいテーマを主に書き連ねてきたメンバーの手によって、今一度初心に返って、基本的な部分を見つめ直してみよう、解説してみようというコンセプトが含まれています。 本日16日目のテーマは『Amazon Kinesis』です。
Amazon Kinesisとは
大量に連続して発生するストリーミングデータをAWS上に格納するための受け口となる、フルマネージドサービスです。 高い信頼性、耐久性と、コストパフォーマンスに優れたバッファとして利用する事ができます。
特徴
Amazon Kinesis Streams
- 2013年にリリースされたAmazon Kinesis、Amazon Kinesis Streamsとサービス呼称が変更されました。
- Kinesis Steamは、最大サイズ1MB迄のレコードを登録でき、ほぼリアルタイム(数秒以内)に参照可能となります。
- 登録されたレコードには一意となる連番が付与され、EC2、EMR、Lamnda等、複数のアプリケーションから参照する事が可能です。
- レコードは3重冗長化され、高い信頼性が確保された状態で24時間保持されます。(拡張データ保持オプション設定により、保管期間は最大7日迄延長可能です)
- シャードの増減により性能調整が可能です。(1シャード性能、1秒あたり1000PUT、または1MB/秒)
Amazon Kinesis Firehose
- 登録可能なデータの仕様はKinesis Streamsと共通です。
- 登録されたデータは、S3、Redshiftに自動的にエクスポートされます。
- Kinesis Streamsで必要だったシャードによる性能管理は不要です。投入データ量に応じた従量課金での利用可能です。
- 2015年12月現在、バージニア、オレゴン、アイルランドの各リージョンで利用可能です。
- 1秒あたり2500回のPUTが可能、サポート経由で上限緩和が可能です。
Amazon Kinesis Analytics
- Amazon Kinesisに登録されたストリームデータのタイムウィンドウ処理、直近の一定時間を対象とした集計などがSQLにより可能となります。
- 2015年12月現在、サインアップ受付中となっています。
コスト
「Amazon Kinesis Firehose > 料金表ページ」 にて紹介されている料金例を元に、Kinesis Streamsの費用も試算してみました。
料金の例 1 ストリーミングデータレコード (1 件のレコードサイズは 3 KB) を 1 秒あたり 1,000 件、米国東部にある Amazon Kinesis Firehose に送信して Amazon S3 > > にロードする場合、月額料金は次のように計算されます。
Amazon Kinesis Streams
月額料金
- 月額料金 = 79.5 USD
- Kinesis Streamからデータを取り出すアプリケーションの実行環境、EC2、Lambda、EMRなどの費用は別途発生します。
内訳
- 1秒あたり3MB(3KB×1000件)のデータ受け取りのため、シャードは4つ用意するものとします。
- 1シャード1時間あたりの時間課金として0.015 USD、1,000,000 PUT毎の課金として、0.014 USDが発生します。
- 時間課金 = (4 シャード * 24時間 * 30日 * 0.015 USD) = 43.2 USD
- PUT課金 = (30 日/月 * 86,400 秒/日 × 1,000 レコード / 1,000,000 PUT * 0.014 = 36.3 USD
- 月額料金 = 43.2 USD + 36.3 USD = 79.5 USD
Amazon Kinesis Firehose
月額料金
- 月額料金 = 432.59 USD
内訳
- 米国東部での料金は、取り込まれた GB データあたり 0.035 USD になります。
- 3 KB のレコードサイズを直近の 5 KB の倍数に切り上げると、5 KB になります。
- 取り込まれたデータ (GB/秒) = (1,000 レコード/秒 * 5 KB/レコード) / 1,048,576 KB/GB = 0.004768 GB/秒
- 取り込まれたデータ (GB/月) = (30 日/月 * 86,400 秒/日 * 0.004768 GB/秒 = 12,359.62 GB/月
- 月額料金 = 12,359.62 GB * 0.035 USD/GB = 432.59 USD
参考(Amazon DynamoDB)
- 用途は異なりますが、DynamoDBをKinesisの代わりにストリームデータの受信と24時間のデータ保管に利用したと仮定して、試算を行いました。
- 米国東部、月間411GB(1日分データ保持)、アイテムサイズ3KB、1 秒あたりの書き込みアイテム数2000(書込1000、削除1000) として、AWS SIMPLE MONTHLY CALCULATORを利用しました。
ユースケース
Kinesis Streams + Lambda, EC2, EMR
- Kinesisで受信したデータ、S3、DynamoDBに格納する軽量な処理はLambdaが最適です。
- リアルタイム性能の(数秒)確保要件がある場合や、複雑なアプリケーションの実行環境としてはEC2が利用可能です。
- データ規模、処理内容によってはEMRの利用も検討します。
Kinesis Firehose
- S3, Redshiftへのデータアーカイブ用途には、Firehoseの利用がお勧めです。
- S3をトリガとしたLambda連携による、準リアルタイム(数分)処理は実現できる可能性があります。
AWSサービス連携
- AWS IoTや、CloudWatch LogsのデータをKinesisで受け取る事が可能です。
- Kinesis、Lambdaがサービス連携のハブとして機能します。
- Kinesis Analyticsがリリースされると、ログ監視など高度なアラームが設置可能になる筈です。
あわせて読みたい
公式情報
- AWS Black Belt Tech シリーズ 2015 - Amazon Kinesis
- New! Streaming Data Flows with Amazon Kinesis Firehose
Developers.IO関連エントリ
- Amazon Kinesis StreamsとAmazon Kinesis Firehoseは何が違うのか
- fluent-plugin-kinesis-firehoseでAmazon Kinesis Firehoseにログを転送する
- AWSのフルマネージドサービスのみ使ってIoT向けビッグデータ基盤を構築する
- Kinesis – 特集カテゴリー –
さいごに
Amazon Kinesis、AWSが従量課金を実現するために、サービスの利用実績を漏れなく確実に収集するために開発された、クラウドサービスの屋台骨を裏から支えているシステムの1つです。
AWSの実力を体感できるAmazon Kinesisシリーズ、エコシステムの充実によって格段に使いやすいサービスに進化しています。クラウドネイティブなデータ収集基盤として是非ご活用ください。
明日(12/17)は、藤本 真司のAmazon Elasticsearch Service編です。お楽しみに!